package com.test.springboot_test.test01_mybatisplus.controller;

import com.test.springboot_test.test01_mybatisplus.domain.Employee;
import com.test.springboot_test.test01_mybatisplus.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/employee")
public class EmployeeController {

    @Autowired
    private EmployeeService employeeService;

    /**
     * 测试git数据更新    test2
     * 第二次测试        test2
     * 第三次测试        test2
     * 第四次测试        test2
     * 第五次测试        test2
     * 测试git数据更新    test
     * 第二次测试        test
     * 第三次测试        test
     * 第四次测试        test
     * 第五次测试        test
     *
     * 第六次测试        test2
     *
     * 第六次测试        test
     *
     * 第七次测试        test
     *
     * 第七次测试        test2
     *
     * 第八次测试        test2
     *
     * 第八次测试        test

     *我在gitee云端做修改，然后让电脑idea上两份同项目仓库代码同步修改，
     *主要是测试idea update project这个功能是否可以更新成功
     *
     * 第九次测试 test2 我先提交，然后另一个idea代码仓库后提交，并且解决冲突
     * 冲突解决，gitee那边更新，但是我先提交，我是冲突解决前的代码
     * 所以我要更新项目，我还是测试idea update project功能
     *主要是测试idea update projetc这个功能是否可以更新成功
     *
     * 第九次测试，我后提交并且，我解决冲突，我拿到的是和gitee同步的代码，我是最新的代码，
     * 我不用测试update project的
     */
    /**
     * 测试git数据更新    test
     */

    @GetMapping("/testvalid")
    public String testvalid(@RequestBody Employee employee) {
        return employeeService.updateEmplpoyee(employee);
    }

    /**
     * 批量插入测试成功
     * @return
     */
    @GetMapping("/insertBatch")
    public String insertBatch() {
        return employeeService.insertBatch();
    }

    /**
     * 这段代码主要是验证批量删除，删除成功，前端传回一个集合，然后我这里是模拟一个集合
     * @return
     */
    @GetMapping("/deleteBatch")
    public String deleteBatch(/*@RequestParam("ids[]") List<Long> ids*/) {
        return employeeService.deleteBatch();
    }

    /**
     * 测试根据ids（多个id）进行查询，进行批量查询，写这个的目的是，既然可以使用批量查询，那我应该也可以批量删除
     * @return
     */
    @GetMapping("/selectList3")
    public List<Employee> selectList3() {
        return employeeService.selectListByIds();
    }

    /**
     * 测试QueryWrapper的模糊查询
     * @param name
     * @return
     */
    @GetMapping("/selectList2")
    public List<Employee> selectListByName(String name){
        return employeeService.selectListByName(name);
    }

    /**
     * 测试QueryWrapper中eq的可行性
     * @param password
     * @return
     */
    @GetMapping("/selectList/{password}")
    public List<Employee> selectList(@PathVariable String password) {
        return employeeService.selectListByPassword(password);
    }

    /**
     * 测试QueryWrapper这个函数可行性
     * @param id
     * @return
     */
    @RequestMapping("/selectList/{id}")
    public List<Employee> selectList(@PathVariable Integer id) {
        return employeeService.selectList(id);
    }

    /**
     * 根据id查询员工信息
     * @param id
     * @return
     */
    @RequestMapping("/selectById")
    public Employee selectById(@RequestParam("id") Integer id) {
        return employeeService.selectById(id);
    }

    /**
     * 获取员工列表
     * @return
     */
    @RequestMapping("/list")
    public  List<Employee> getEmployee() {

        List<Employee> employee = employeeService.list();

        return employee;
    }

    /**
     * 新增员工
     * @param
     * @return
     */
    @RequestMapping("/add")
    public void addEmployee() {
        employeeService.add();
    }

    /**
     * 删除员工
     * @param id
     */
    @RequestMapping("/delete")
    public void deleteEmployee(@RequestParam Integer id) {
        System.out.println("id:" + id);
        employeeService.delete(id);
    }

    /**
     * 更新员工信息
     */
    @RequestMapping("/update")
    public void updateEmployee() {
        employeeService.update();
    }

    /**
     * 分页查询，但是有缺陷
     */
    @RequestMapping("/page")
    public void page() {
        employeeService.pageSelect();
    }
}
